A network storage server is a processing system that is used to store and retrieve data on behalf of one or more hosts on a network. A storage server operates on behalf of one or more hosts to store and manage data in a set of mass storage devices, e.g., magnetic or optical storage-based disks, solid state devices, or tapes. Some storage servers are designed to service file-level requests from hosts, as is commonly the case with file servers used in network attached storage (NAS) environments. Other storage servers are designed to service block-level requests from hosts, as with storage controllers used in a storage area network (SAN) environment. Still other storage servers are capable of servicing both file-level requests and block-level requests.
To improve the operation of storage systems, frequently used or potentially used data is often stored in a data cache made up of relatively fast, persistent or transitory memory, such as flash, random access memory (RAM), solid state memory, or the like. This data cache may also be used when receiving write data from an application to be stored at a storage device managed by a storage system. This received data may be held in cache until system resources allow it to be written to persistent storage (also known as being “flushed”) or for other reasons. Cache flushing that is aggressive generally provides high performance for small block write operations. Aggressive cache flushing can introduce problems with overall storage system operation by delaying read operations, however. This can hurt system performance benchmarks, such as SPC-1 results. SPC-1 is a generally understood benchmark from the Storage Performance Council that consists of a single workload designed to demonstrate the performance of a storage subsystem while performing the typical functions of business critical applications, characterized by predominately random input/output (I/O) operations and requires both queries as well as update operations. Examples of those types of applications include database operations, mail server implementations, and others.
Continuous efforts are being made to improve the overall performance of storage systems and caching operations.